package com.lingqi.commands;

import com.lingqi.util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

// 下架书籍 by 管理员
public class PutOffCommand {
    public static void main(String[] args) throws SQLException {
        // 1.登录（不需要）
        // 2.读取信息
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入书名：");
        String name = scanner.nextLine();
        System.out.print("请输入数目：");
        int count = scanner.nextInt();

        System.out.println("DEBUG:用户输入的书名 = " + name);
        System.out.println("DEBUG:用户输入的数目 = " + count);

        // 3. 执行sql，操作数据
        // 3.1 select * from books where name = ?
        // 查到了（正常下架），如果没有查到，给出提示并退出
        // count < books.count  使用 update 下架
        // books.count < count < books.total    最多只能下架books.count 本，使用 update 下架
        // count == books.count == books.total   使用delete 下架
        // books.count < count == books.total   最多只能下架books.count 本，使用 update 下架
        // count > books.total      下架 books.total 本，使用 delete 下架
        // 0 <= books.count <= books.total   这个不等式是必然满足的
        // 我们这里只考虑count 和 books.total 的关系

        Integer bid = null;
        Integer total = null;
        try(Connection c = DBUtil.connection()){
            String sql = "select bid, count, total from books where name = ?";
            try(PreparedStatement ps = c.prepareStatement(sql)){
                ps.setString(1,name);
                System.out.println("DEBUG:执行的 SQL = " + ps);

                try(ResultSet rs = ps.executeQuery()){
                    if(!rs.next()){
                        System.out.println("查无此书");
                        return;
                    }

                    bid = rs.getInt("bid");
                    total = rs.getInt("total");
                }
            }
        }
        System.out.println("DEBUG:查询到的 bid = " + bid);
        System.out.println("DEBUG:查询到的 total = " + total);

        if(count < total){
            // 执行update 下架
            try(Connection c = DBUtil.connection()){
                String sql = "update books set count = count - ?,total = total - ? where bid = ?";
                try(PreparedStatement ps = c.prepareStatement(sql)){
                    ps.setInt(1,count);
                    ps.setInt(2,count);
                    ps.setInt(3,bid);

                    System.out.println("DEBUG:执行的 SQL = " + ps);

                    ps.executeUpdate();
                }
            }
        } else {
            // 执行 delete 下架
            try(Connection c = DBUtil.connection()){
                String sql = "delete from books where bid = ?";
                try(PreparedStatement ps = c.prepareStatement(sql)){
                    ps.setInt(1,bid);

                    System.out.println("DEBUG:执行的 SQL = " + ps);

                    ps.executeUpdate();
                }
            }
        }
        System.out.println("下架成功");
    }

}
